home *** CD-ROM | disk | FTP | other *** search
/ BUG 1 / BUGCD1996_0708.ISO / pc / util / minilin / minilin.exe / DEV / MAKEDEV.{66 < prev    next >
Text File  |  1994-02-19  |  9KB  |  343 lines

  1. #! /bin/sh -
  2.  
  3. # $Id: MAKEDEV,v 1.3 1994/01/04 10:27:24 alfie Exp alfie $
  4. #
  5. # This is my attempt at a MAKEDEV script.  IMHO it cleans up many areas.
  6. # It can be used to determine the necessary info for a device without
  7. # actually creating it using the '-n' flag.
  8. #
  9. # It is based (heavily) on Jim Winstead's version and my main source of
  10. # information has been Rick Miller's Linux device list.
  11. #
  12. # It makes less individual devices and tends to make classes of devices
  13. # (eg "MAKEDEV hda" will create "hda" and the 8 partitions; "MAKEDEV ptyp"
  14. # will create the ptyp[0-f] master and ttyp[0-f] slave devices).
  15. #
  16. # The group used for the devices are changeable at the head of the script,
  17. # so you can edit these to match the groups on your system, or your whims.
  18. #
  19. # If you are aware of any glaring omissions or errors, please let me know.
  20. #
  21. # Thanks to Ian Jackson for help and encouragement.
  22. #     Nick Holloway <alfie@dcs.warwick.ac.uk>  
  23. #                    Last changed: 4th January 1994
  24. #---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#
  25. # Device 'make' file.  Valid arguments:
  26. #    generic        create a generic subset of devices
  27. #    local        configuration specific devices (runs MAKEDEV.local)
  28. #    std        standard devices
  29. #  Virtual Terminals:
  30. #    console        (also known as tty0)
  31. #    tty{0..63}    virtual consoles
  32. #  Serial devices:
  33. #    ttyS{0..63}    serial ports and corresponding dialout device
  34. #  Pseudo Terminals:
  35. #    pty[p-s]    banks of of master and slave pseudo terminals
  36. #  Parallel ports:
  37. #    par[0-3]    parallel ports
  38. #    lp[0-3]           ""     ""
  39. #  Bus Mice:
  40. #    busmice        various bus mice
  41. #  Joystick:
  42. #    js        joystick
  43. #  Disks:
  44. #    fd[0-4]        floppy disks
  45. #    hd[a-d]        AT hard disks (1st controller)
  46. #    hd1[a-d]    2nd AT controller hard disks
  47. #    xd[a-d]     XT hard disks
  48. #    sd[a-i]        SCSI hard disks
  49. #    loop        Loopback disk devices
  50. #  Tapes:
  51. #    st[0-1]        SCSI tapes
  52. #    qic        QIC-80 tapes
  53. #    ftape        floppy driver tapes (QIC-117)
  54. #  CD:
  55. #    scd[0-1]    SCSI CD players
  56. #    sonycd        Sony CDU-31A CD player
  57. #    mcd        Mitsumi CD player
  58. #    cdu535        Sony CDU-535 CD player
  59. #    lmscd        LMS/Philips CD player    (needs new major number)
  60. #    sbpcd        Sound Blaster CD player
  61. #  Networking:
  62. #    net        various protocol control devices (?)
  63. #    we[0-3],wd[0-3],ec[0-3],ne[0-3]
  64. #            various net interfaces (?)
  65. #  Audio:
  66. #    audio        various audio devices
  67. #    pcaudio        audio devices used by pcsndrv
  68. #  Misc:
  69. #       sg        generic SCSI devices
  70. #    fd        file names for file descriptors
  71. #
  72. #---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#
  73.  
  74. # Define what group a collection of devices will be created with -- you will
  75. # probably need to edit the right hand side to to match your groups.
  76.  
  77.  system=sys
  78.    kmem=kmem
  79.     tty=tty
  80. dialout=uucp
  81.   mouse=sys
  82. printer=daemon
  83.  floppy=floppy
  84.    disk=disk
  85.   cdrom=disk
  86.    tape=disk
  87.     net=sys
  88.   audio=sys
  89.  
  90. #---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#
  91.  
  92. makedev () {    # usage: makedev name [bcu] major minor owner:group mode
  93.     rm -f $1
  94.     mknod $1 $2 $3 $4 &&
  95.     chown $5 $1 &&
  96.     chmod $6 $1
  97. }
  98. symlink () {    # usage: symlink name target
  99.     rm -f $1
  100.     ln -s $2 $1
  101. }
  102.  
  103. debug=
  104. if [ _"-n" = _"$1" ]
  105. then
  106.     shift 
  107.     debug=-n
  108.     makedev () { 
  109.         echo "$1 = $2 $3 $4 $5 $6" 
  110.     }
  111.     symlink () {
  112.         echo "$1 -> $2"
  113.     }
  114. fi
  115.  
  116.  
  117. for arg
  118. do
  119.     case $arg in
  120.     generic)
  121.         sh $0 $debug std
  122.         sh $0 $debug fd0 fd1
  123.         sh $0 $debug hda hdb
  124.         sh $0 $debug xda xdb
  125.         sh $0 $debug sda sdb
  126.         sh $0 $debug ptyp ptyq ptyr ptys
  127.         sh $0 $debug console tty1 tty2 tty3 tty4 tty5 tty6 tty7 tty8
  128.         sh $0 $debug ttyS0 ttyS1 ttyS2 ttyS3
  129.         sh $0 $debug busmice
  130.         sh $0 $debug lp0 lp1 lp2
  131.         sh $0 $debug par0 par1 par2
  132.         ;;
  133.     local)
  134.         sh $0.local $debug
  135.         ;;
  136.     std)
  137.         makedev mem  c 1 1 root:$kmem   660
  138.         makedev kmem c 1 2 root:$kmem   660
  139.         makedev null c 1 3 root:$system 666
  140.         makedev port c 1 4 root:$kmem   660
  141.         makedev zero c 1 5 root:$system 666
  142.     #    makedev core c 1 6 root:$kmem   660
  143.         makedev full c 1 7 root:$system 666
  144.         makedev ram  b 1 1 root:$disk   660
  145.         makedev tty  c 5 0 root:$tty    666
  146.         ;;
  147.     console)
  148.         makedev console c 4 0 root:$tty 622
  149.         ;;
  150.     tty[0-9]|tty[1-5][0-9]|tty[6][0-3])
  151.         line=`expr $arg : "tty\(.*\)"`
  152.         makedev tty$line c 4 $line root:$tty 622
  153.         ;;
  154.     ttyS[0-9]|ttyS[1-5][0-9]|ttyS[6][0-3])
  155.         line=`expr $arg : "ttyS\(.*\)"`
  156.         minor=`expr 64 + $line`
  157.         makedev ttyS$line c 4 $minor root:$tty 666
  158.         makedev cua$line c 5 $minor root:$dialout 660
  159.         ;;
  160.     pty[p-s])
  161.         # Currently limited to 64 master/slave pairs.
  162.         bank=`expr $arg : "pty\(.\)"`
  163.         base=`expr \( pqrs : ".*$bank" - 1 \) \* 16`
  164.         for i in 0 1 2 3 4 5 6 7 8 9 a b c d e f
  165.         do
  166.             j=`expr 0123456789abcdef : ".*$i" - 1`
  167.             makedev pty$bank$i c 4 `expr 128 + $base + $j` root:$tty 666
  168.             makedev tty$bank$i c 4 `expr 192 + $base + $j` root:$tty 666
  169.         done
  170.         ;;
  171.     par[0-2])
  172.         port=`expr $arg : "par\(.\)"`
  173.         makedev $arg c 6 $port root:$printer 660 
  174.         ;;
  175.     lp[0-2])
  176.         port=`expr $arg : "lp\(.\)"`
  177.         makedev $arg c 6 $port root:$printer 660 
  178.         ;;
  179.     busmice)
  180.         makedev logibm   c 10 0 root:$mouse 666
  181.         makedev psaux    c 10 1 root:$mouse 666
  182.         makedev inportbm c 10 2 root:$mouse 666
  183.         makedev atibm    c 10 3 root:$mouse 666
  184.         ;;
  185.     js)
  186.         makedev js0 c 15 0 root:$mouse 666
  187.         makedev js1 c 15 1 root:$mouse 666
  188.         ;;
  189.     fd[0-4])
  190.         unit=`expr $arg : "fd\(.\)"`
  191.         makedev fd$unit b 2 $unit root:$floppy 660
  192.         makedev fd${unit}d360  b 2 `expr $unit +  4` root:$floppy 660
  193.         makedev fd${unit}h1200 b 2 `expr $unit +  8` root:$floppy 660
  194.         makedev fd${unit}D360  b 2 `expr $unit + 12` root:$floppy 660
  195.         makedev fd${unit}H360  b 2 `expr $unit + 12` root:$floppy 660
  196.         makedev fd${unit}D720  b 2 `expr $unit + 16` root:$floppy 660
  197.         makedev fd${unit}H720  b 2 `expr $unit + 16` root:$floppy 660
  198.         makedev fd${unit}h360  b 2 `expr $unit + 20` root:$floppy 660
  199.         makedev fd${unit}h720  b 2 `expr $unit + 24` root:$floppy 660
  200.         makedev fd${unit}H1440 b 2 `expr $unit + 28` root:$floppy 660
  201.         ;;
  202.     hd[a-d])
  203.         unit=`expr $arg : "hd\(.\)"`
  204.         base=`expr \( abcd : ".*$unit" - 1 \) \* 64`
  205.         makedev hd$unit b 3 $base root:$disk 660
  206.         for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
  207.         do
  208.             makedev hd$unit$part b 3 `expr $base + $part` root:$disk 660
  209.         done
  210.         ;;
  211.     hd1[a-d])
  212.         unit=`expr $arg : "hd1\(.\)"`
  213.         base=`expr \( abcd : ".*$unit" - 1 \) \* 64`
  214.         makedev hd1$unit b 22 $base root:$disk 660
  215.         for part in 1 2 3 4 5 6 7 8 # 9 10 11 12 13 14 15 16
  216.         do
  217.             makedev hd1$unit$part b 22 `expr $base + $part` root:$disk 660
  218.         done
  219.         ;;
  220.     xd[a-d])
  221.         unit=`expr $arg : "xd\(.\)"`
  222.         base=`expr \( abcd : ".*$unit" - 1 \) \* 64`
  223.         makedev xd$unit b 13 $base root:$disk 660
  224.         for part in 1 2 3 4 5 6 7 8 # 9 10 11 12 13 14 15 16
  225.         do
  226.             makedev xd$unit$part b 13 `expr $base + $part` root:$disk 660
  227.         done
  228.         ;;
  229.     sd[a-h])
  230.         unit=`expr $arg : "sd\(.\)"`
  231.         base=`expr \( abcdefgh : ".*$unit" - 1 \) \* 16`
  232.         makedev sd$unit b 8 $base root:$disk 660
  233.         for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
  234.         do
  235.             makedev sd$unit$part b 8 `expr $base + $part` root:$disk 660
  236.         done
  237.         ;;
  238.     loop)
  239.         for part in 0 1 2 3 4 5 6 7
  240.         do
  241.             makedev loop$part b 12 $part root:$disk 660
  242.         done
  243.         ;;
  244.     st[0-1])
  245.         unit=`expr $arg : "st\(.\)"`
  246.         makedev st$unit c 9 $unit root:$tape 660
  247.         makedev nst$unit c 9 `expr 128 + $unit` root:$tape 660
  248.         ;;
  249.     qic)
  250.         makedev rmt8       c 12   6 root:$tape 660
  251.         makedev rmt16      c 12   8 root:$tape 660
  252.         makedev tape-d     c 12 136 root:$tape 660
  253.         makedev tape-reset c 12 255 root:$tape 660
  254.         ;;
  255.     ftape)
  256.         makedev ftape  c 27 0 root:$tape 660
  257.         makedev nftape c 27 4 root:$tape 660
  258.         ;;
  259.     scd[0-1])
  260.         unit=`expr $arg : "scd\(.\)"`
  261.         makedev scd$unit b 11 $unit root:$cdrom 660
  262.         ;;
  263.     sonycd)
  264.         makedev $arg b 15 0 root:$cdrom 660
  265.         ;;
  266.     mcd)
  267.         makedev $arg b 23 0 root:$cdrom 660
  268.         ;;
  269.     cdu535)
  270.         makedev $arg b 24 0 root:$cdrom 660
  271.         ;;
  272. #    lmscd)
  273. #        makedev $arg b 24 0 root:$cdrom 660
  274. #        ;;
  275.     sbpcd)
  276.         makedev $arg b 25 0 root:$cdrom 660
  277.         ;;
  278.     net)
  279.         makedev socket   c 16 0 root:$net 600
  280.         makedev arp      c 16 1 root:$net 600
  281.         makedev unix     c 17 0 root:$net 600
  282.         makedev inet     c 18 0 root:$net 600
  283.         makedev ip       c 18 1 root:$net 600
  284.         makedev icmp     c 18 2 root:$net 600
  285.         makedev tcp      c 18 3 root:$net 600
  286.         makedev udp      c 18 4 root:$net 600
  287.         ;;
  288.     we[0-3])
  289.         card=`expr $arg : "we\(.\)"`
  290.         makedev $arg c 19 $card root:$net 600
  291.         ;;
  292.     wd[0-3])
  293.         card=`expr $arg : "wd\(.\)"`
  294.         makedev $arg c 20 $card root:$net 600
  295.         ;;
  296.     ec[0-3])
  297.         card=`expr $arg : "ec\(.\)"`
  298.         makedev $arg c 20 `expr 8 + $card` root:$net 600
  299.         ;;
  300.     ne[0-3])
  301.         card=`expr $arg : "ne\(.\)"`
  302.         makedev $arg c 20 `expr 16 + $card` root:$net 600
  303.         ;;
  304.     audio)
  305.         makedev mixer     c 14 0 root:$audio 666
  306.         makedev sequencer c 14 1 root:$audio 666
  307.         makedev midi      c 14 2 root:$audio 666
  308.         makedev dsp       c 14 3 root:$audio 666
  309.         makedev audio     c 14 4 root:$audio 666
  310.         makedev sndstat   c 14 6 root:$audio 666
  311.     #    makedev dsp1      c 14 19 root:$audio 666
  312.     #    makedev audio1    c 14 20 root:$audio 666
  313.         ;;
  314.     pcaudio)
  315.         makedev pcmixer c 30 0 root:$audio 666
  316.         makedev pcsp    c 30 3 root:$audio 666
  317.         makedev pcaudio c 30 4 root:$audio 666
  318.         ;;
  319.     sg)
  320.         for unit in a b c d e f g h
  321.         do
  322.             minor=`expr abcdefgh : ".*$unit" - 1`
  323.             makedev $arg$unit c 21 $minor root:$system 660
  324.         done
  325.         ;;
  326.     fd)
  327.         # not really devices, we use the /proc filesystem
  328.         symlink fd     /proc/self/fd
  329.         symlink stdin  fd/0
  330.         symlink stdout fd/1
  331.         symlink stderr fd/2
  332.         ;;
  333.     *)
  334.         echo "don't know how to make device \"$arg\"" >&2
  335.         ;;
  336.     esac
  337. done
  338.  
  339. exit 0
  340.